import sys
import re

"""Baby Names exercise

Define the extract_names() function below and change main()
to call it.

For writing regex, it's nice to include a copy of the target，
text for inspiration.

Here's what the html looks like in the baby.html files:
...
<h3 align="center">Popularity in 1990</h3>
....
<tr align="right"><td>1</td><td>Michael</td><td>Jessica</td>
<tr align="right"><td>2</td><td>Christopher</td><td>Ashley</td>
<tr align="right"><td>3</td><td>Matthew</td><td>Brittany</td>
...

Suggested milestones for incremental development:
 -Extract the year and print it
 -Extract the names and rank numbers and just print them
 -Get the names data into a dict and print it
 -Build the [year, 'name rank', ... ] list and print it
 -Fix main() to use the extract_names list
"""


def extract_names(filename):
    """
    Given a file name for baby.html, returns a list starting with the year string
    followed by the name-rank strings in alphabetical order.
    ['2006', 'Aaliyah 91', 'Aaron 57', 'Abagail 895', ' ...]
    """
    # +++your code here+++
    f = open(filename, 'r')
    # print(txt)
    babe_name = []
    fileword = f.readlines()
    #print(fileword)
    for word_line in fileword:
        years = re.search(' align="center">Popularity in (\\w+)', word_line)
        words = re.search(r'<tr align="right"><td>(\w+)</td><td>(\w+)</td><td>(\w+)</td>', word_line)
        # print(type(words))
        if years:
            year = years.group(1)
            babe_name.insert(0, year)
        if words:
            rank = words.group(1)
            name = words.group(2)
            babe_name.append(name + ' ' + rank)
    babe_name.sort()
    print(babe_name)
    return babe_name


def main():
    # This command-line parsing code is provided.
    # Make a list of command line arguments, omitting the [0] element
    # which is the script itself.
    args = sys.argv[1:]

    if not args:
        print
        'usage: [--summaryfile] file [file ...]'
        sys.exit(1)

    # Notice the summary flag and remove it from args if it is present.
    summary = False
    if args[0] == '--summaryfile':
        summary = True
        del args[0]

    # +++your code here+++
    # For each filename, get the names, then either print the text output
    # or write it to a summary file
    for arg in args:
        names = extract_names(arg)
        print('\n'.join(names))
        if summary:
            sf = open(names[0] + '.txt', 'w')
            sf.write('\n'.join(names) + '\n')

if __name__ == '__main__':
    main()
